﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web;

namespace Framework.MVC.Infrastructure
{
    /// <summary>
    /// 接口返回类型_基本
    /// </summary>
    public class ReturnModel_Common
    {
        private bool _sucess = true;
        /// <summary>
        /// 是否成功
        /// </summary>
        public bool success { get { return _sucess; } set { _sucess = value; } }

        private ReturnCode_System _code = ReturnCode_System.操作成功;
        /// <summary>
        /// 操作码
        /// </summary>
        public ReturnCode_System code { get { return _code; } set { _code = value; } }

        private string _msg = "OK";
        /// <summary>
        /// 调试信息（并不是前端提示用户的文字。msg最好是英文，例：LOGIN_LIMITED）
        /// </summary>
        public string msg { get { return _msg; } set { _msg = value; } }
    }

    /// <summary>
    /// 接口返回类型_简单数据
    /// </summary>
    public class ReturnModel_Data : ReturnModel_Common
    {
        /// <summary>
        /// 数据
        /// </summary>
        public dynamic data { get; set; }
    }


    /// <summary>
    /// 接口返回类型_BootstrapTable插件分页格式
    /// </summary>
    public class ReturnModel_BootstrapTable_Pager : ReturnModel_Common
    {
        /// <summary>
        /// 总数
        /// </summary>
        public int total { get; set; }

        /// <summary>
        /// 数据
        /// </summary>
        public dynamic rows { get; set; }
    }

    /// <summary>
    /// 系统错误码
    /// </summary>
    public enum ReturnCode_System
    {




        /*
         * 自动生成错误码对照表接口：localhost:7626/Common/GetReturnCode?type=System
         * 
         * 
         * 【【注意事项】】：
         * 1）枚举上标注相同的Description可以在一组显示，方便查看。具体请访问上面的URL
         * 2）枚举后面的数字不能重复使用，否则前端提示不准确
         * 3）增、删、改枚举后必须同步修改到前端js文件（Framework.MVC\Content\js\codemsg.js），然后到引用该js的页面加上引用时间戳
         * 
         * 
         * 
         * 
         */




        [Description("全局")]
        操作成功 = 0,
        [Description("全局")]
        操作失败 = -1,
        [Description("全局")]
        Token过期或错误 = -2,
        [Description("全局")]
        服务端抛错 = -3,
        [Description("全局")]
        缺少字段 = -4,
        [Description("全局")]
        找不到页面 = -5,

        [Description("后台用户")]
        后台账号或密码错误 = 10001,
        [Description("后台用户")]
        后台账号被禁用 = 10002,
        [Description("后台用户")]
        后台账号登录失败次数过多 = 10003,
        [Description("后台用户")]
        后台登录验证码错误或过期 = 10004,
        [Description("后台用户")]
        后台账号和密码不能为空 = 10005,
        [Description("后台用户")]
        后台验证码不能为空 = 10006,
        [Description("后台用户")]
        已经存在此账号 = 10007,
        [Description("后台用户")]
        找不到当前用户 = 10008,
        [Description("后台用户")]
        后台账号或密码长度非法 = 10009,


        [Description("手机用户")]
        手机端账号或密码错误 = 10101,
        [Description("手机用户")]
        手机端账号被禁用 = 10102,


    }



    /*以下仅做演示，微信和微博的错误码不需要后台返回，直接看微信和微博的文档即可*/


    /// <summary>
    /// 微信错误码
    /// https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234
    /// </summary>
    public enum ReturnCode_WeiXin
    {
        /*全局返回码*/
        [Description("全局返回码")]
        系统繁忙_此时请开发者稍候再试 = -1,
        [Description("全局返回码")]
        请求成功 = 0,
        [Description("全局返回码")]
        获取access_token时AppSecret错误_或者access_token无效 = 40001,
        [Description("全局返回码")]
        不合法的凭证类型 = 40002,
        [Description("全局返回码")]
        不合法的OpenID = 40003,

    }

    /// <summary>
    /// 微博错误码
    /// http://open.weibo.com/wiki/Error_code
    /// </summary>
    public enum ReturnCode_WeiBo
    {
        /*系统级错误代码*/
        [Description("系统级错误代码")]
        系统错误 = 10001,
        [Description("系统级错误代码")]
        服务暂停 = 10002,
        [Description("系统级错误代码")]
        远程服务错误 = 10003,
        [Description("系统级错误代码")]
        IP限制不能请求该资源 = 10004,
        [Description("系统级错误代码")]
        该资源需要appkey拥有授权 = 10005,
        [Description("系统级错误代码")]
        缺少source_appkey参数 = 10006,

        /*服务级错误代码*/
        [Description("服务级错误代码")]
        IDs参数为空 = 20001,
        [Description("服务级错误代码")]
        Uid参数为空 = 20002,
        [Description("服务级错误代码")]
        用户不存在 = 20003,
        [Description("服务级错误代码")]
        不支持的图片类型_仅仅支持JPG_GIF_PNG = 20005,
        [Description("服务级错误代码")]
        图片太大 = 20006,

    }

}